def p_col(df):
    print(len(df))

'''筛选沪深交易所个股 （创业板个股2020-8-24日改为20cm张跌停板）'''
def filter_20cm(df):
    df2 = df[df['code'].astype(str).str.startswith(('30'))]
    df2 = df2[df2['date'] > '2020-07-31']
    return df2

    
'''筛选沪深交易所个股 （创业板个股2020-8-24日改为20cm张跌停板）'''
def filter_10cm(df):
    df1 = df[df['code'].astype(str).str.startswith(('00','60',))]
    df2 = df[df['code'].astype(str).str.startswith(('30'))]
    df2 = df2[df2['date'] < '2020-07-31']
    # 按行拼接
    final_df = pd.concat([df1, df2], axis=0, ignore_index=True)
    return final_df


import pandas as pd
from datetime import timedelta

def get_previous_days_data(df, days_before=1):
    """
    获取最新日期前 N 天的数据
    
    参数:
    df: 包含日期列的DataFrame
    days_before: 要获取的前几天数据，默认为1（前一天）
    
    返回:
    指定天数的所有行
    """
    try:
        # 1. 确保日期列是日期时间类型
        df = df.copy()
        df['date'] = pd.to_datetime(df['date'])
        
        # 2. 找到最新日期
        latest_date = df['date'].max()
        
        # 3. 计算目标日期
        target_date = latest_date - timedelta(days=days_before)
        
        # 4. 筛选目标日期的数据
        previous_data = df[df['date'] == target_date].copy()
        
        # 5. 重置索引并返回
        return previous_data.reset_index(drop=True)
    
    except Exception as e:
        print(f"获取前{days_before}天数据失败：{str(e)}")
        raise

